Micron Document
πŸŽ–οΈGitΠ―Ρ€Π°πŸŽ–οΈ

Node / meshtastic / Meshtastic-Android / files / .github / agents / speckit.implement.agent.md

Displaying Raw β€’ View rendered β€’ Download

.github/agents/speckit.implement.agent.md d9b024acde4db05002d2f413cfcffc5fd19927d5 (d9b024ac) Text, 10.47 KB

---
Tc9d1d9description: Execute the implementation plan by processing and executing all tasks defined in tasks.md
Tc9d1d9---

Tc9d1d9## User Input

Ta5d6ff```Ta5d6fftext
$ARGUMENTS
Ta5d6ff```

You **MUST** consider the user input before proceeding (if not empty).

Tc9d1d9## Pre-Execution Checks

**Check for extension hooks (before implementation)**:
Tff7b72- Check if Ta5d6ff`.specify/extensions.yml` exists in the project root.
Tff7b72- If it exists, read it and look for entries under the Ta5d6ff`hooks.before_implement` key
Tff7b72- If the YAML cannot be parsed or is invalid, skip hook checking silently and continue normally
Tff7b72- Filter out hooks where Ta5d6ff`enabled` is explicitly Ta5d6ff`false`. Treat hooks without an Ta5d6ff`enabled` field as enabled by default.
Tff7b72- For each remaining hook, do **not** attempt to interpret or evaluate hook Ta5d6ff`condition` expressions:
Tff7b72- If the hook has no Ta5d6ff`condition` field, or it is null/empty, treat the hook as executable
Tff7b72- If the hook defines a non-empty Ta5d6ff`condition`, skip the hook and leave condition evaluation to the HookExecutor implementation
Tff7b72- For each executable hook, output the following based on its Ta5d6ff`optional` flag:
Tff7b72- **Optional hook** (Ta5d6ff`optional: true`):
Ta5d6ff ```
## Extension Hooks

**Optional Pre-Hook**: {extension}
Command: `/{command}`
Description: {description}

Prompt: {prompt}
To execute: `/{command}`
```
Tff7b72- **Mandatory hook** (Ta5d6ff`optional: false`):
Ta5d6ff ```
## Extension Hooks

**Automatic Pre-Hook**: {extension}
Executing: `/{command}`
EXECUTE_COMMAND: {command}
Wait for the result of the hook command before proceeding to the Outline.
```
Tff7b72- If no hooks are registered or Ta5d6ff`.specify/extensions.yml` does not exist, skip silently

Tc9d1d9## Outline

Tff7b721. Run Ta5d6ff`.specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks` from repo root and parse FEATURE_DIR and AVAILABLE_DOCS list. All paths must be absolute. For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'\''m Groot' (or double-quote if possible: "I'm Groot").

Tff7b722. **Check checklists status** (if FEATURE_DIR/checklists/ exists):
Tff7b72- Scan all checklist files in the checklists/ directory
Tff7b72- For each checklist, count:
Tff7b72- Total items: All lines matching Ta5d6ff`- [ ]` or Ta5d6ff`- [X]` or Ta5d6ff`- [x]`
Tff7b72- Completed items: Lines matching Ta5d6ff`- [X]` or Ta5d6ff`- [x]`
Tff7b72- Incomplete items: Lines matching Ta5d6ff`- [ ]`
Tff7b72- Create a status table:

Ta5d6ff ```Ta5d6fftext
| Checklist | Total | Completed | Incomplete | Status |
|-----------|-------|-----------|------------|--------|
| ux.md | 12 | 12 | 0 | βœ“ PASS |
| test.md | 8 | 5 | 3 | βœ— FAIL |
| security.md | 6 | 6 | 0 | βœ“ PASS |
Ta5d6ff ```

Tff7b72- Calculate overall status:
Tff7b72- **PASS**: All checklists have 0 incomplete items
Tff7b72- **FAIL**: One or more checklists have incomplete items

Tff7b72- **If any checklist is incomplete**:
Tff7b72- Display the table with incomplete item counts
Tff7b72- **STOP** and ask: "Some checklists are incomplete. Do you want to proceed with implementation anyway? (yes/no)"
Tff7b72- Wait for user response before continuing
Tff7b72- If user says "no" or "wait" or "stop", halt execution
Tff7b72- If user says "yes" or "proceed" or "continue", proceed to step 3

Tff7b72- **If all checklists are complete**:
Tff7b72- Display the table showing all checklists passed
Tff7b72- Automatically proceed to step 3

Tff7b723. Load and analyze the implementation context:
Tff7b72- **REQUIRED**: Read tasks.md for the complete task list and execution plan
Tff7b72- **REQUIRED**: Read plan.md for tech stack, architecture, and file structure
Tff7b72- **IF EXISTS**: Read data-model.md for entities and relationships
Tff7b72- **IF EXISTS**: Read contracts/ for API specifications and test requirements
Tff7b72- **IF EXISTS**: Read research.md for technical decisions and constraints
Tff7b72- **IF EXISTS**: Read .specify/memory/constitution.md for governance constraints
Tff7b72- **IF EXISTS**: Read quickstart.md for integration scenarios

Tff7b724. **Project Setup Verification**:
Tff7b72- **REQUIRED**: Create/verify ignore files based on actual project setup:

**Detection & Creation Logic**:
Tff7b72- Check if the following command succeeds to determine if the repository is a git repo (create/verify .gitignore if so):

Ta5d6ff ```Ta5d6ffsh
git rev-parse --git-dir T79c0ff2>/dev/null
Ta5d6ff ```

Tff7b72- Check if Dockerfile* exists or Docker in plan.md β†’ create/verify .dockerignore
Tff7b72- Check if .eslintrc* exists β†’ create/verify .eslintignore
Tff7b72- Check if eslint.config.* exists β†’ ensure the config's Ta5d6ff`ignores` entries cover required patterns
Tff7b72- Check if .prettierrc* exists β†’ create/verify .prettierignore
Tff7b72- Check if .npmrc or package.json exists β†’ create/verify .npmignore (if publishing)
Tff7b72- Check if terraform files (*.tf) exist β†’ create/verify .terraformignore
Tff7b72- Check if .helmignore needed (helm charts present) β†’ create/verify .helmignore

**If ignore file already exists**: Verify it contains essential patterns, append missing critical patterns only
**If ignore file missing**: Create with full pattern set for detected technology

**Common Patterns by Technology** (from plan.md tech stack):
Tff7b72- **Node.js/JavaScript/TypeScript**: Ta5d6ff`node_modules/`, Ta5d6ff`dist/`, Ta5d6ff`build/`, Ta5d6ff`*.log`, Ta5d6ff`.env*`
Tff7b72- **Python**: Ta5d6ff`__pycache__/`, Ta5d6ff`*.pyc`, Ta5d6ff`.venv/`, Ta5d6ff`venv/`, Ta5d6ff`dist/`, Ta5d6ff`*.egg-info/`
Tff7b72- **Java**: Ta5d6ff`target/`, Ta5d6ff`*.class`, Ta5d6ff`*.jar`, Ta5d6ff`.gradle/`, Ta5d6ff`build/`
Tff7b72- **C#/.NET**: Ta5d6ff`bin/`, Ta5d6ff`obj/`, Ta5d6ff`*.user`, Ta5d6ff`*.suo`, Ta5d6ff`packages/`
Tff7b72- **Go**: Ta5d6ff`*.exe`, Ta5d6ff`*.test`, Ta5d6ff`vendor/`, Ta5d6ff`*.out`
Tff7b72- **Ruby**: Ta5d6ff`.bundle/`, Ta5d6ff`log/`, Ta5d6ff`tmp/`, Ta5d6ff`*.gem`, Ta5d6ff`vendor/bundle/`
Tff7b72- **PHP**: Ta5d6ff`vendor/`, Ta5d6ff`*.log`, Ta5d6ff`*.cache`, Ta5d6ff`*.env`
Tff7b72- **Rust**: Ta5d6ff`target/`, Ta5d6ff`debug/`, Ta5d6ff`release/`, Ta5d6ff`*.rs.bk`, Ta5d6ff`*.rlib`, Ta5d6ff`*.prof*`, Ta5d6ff`.idea/`, Ta5d6ff`*.log`, Ta5d6ff`.env*`
Tff7b72- **Kotlin**: Ta5d6ff`build/`, Ta5d6ff`out/`, Ta5d6ff`.gradle/`, Ta5d6ff`.idea/`, Ta5d6ff`*.class`, Ta5d6ff`*.jar`, Ta5d6ff`*.iml`, Ta5d6ff`*.log`, Ta5d6ff`.env*`
Tff7b72- **C++**: Ta5d6ff`build/`, Ta5d6ff`bin/`, Ta5d6ff`obj/`, Ta5d6ff`out/`, Ta5d6ff`*.o`, Ta5d6ff`*.so`, Ta5d6ff`*.a`, Ta5d6ff`*.exe`, Ta5d6ff`*.dll`, Ta5d6ff`.idea/`, Ta5d6ff`*.log`, Ta5d6ff`.env*`
Tff7b72- **C**: Ta5d6ff`build/`, Ta5d6ff`bin/`, Ta5d6ff`obj/`, Ta5d6ff`out/`, Ta5d6ff`*.o`, Ta5d6ff`*.a`, Ta5d6ff`*.so`, Ta5d6ff`*.exe`, Ta5d6ff`*.dll`, Ta5d6ff`autom4te.cache/`, Ta5d6ff`config.status`, Ta5d6ff`config.log`, Ta5d6ff`.idea/`, Ta5d6ff`*.log`, Ta5d6ff`.env*`
Tff7b72- **Swift**: Ta5d6ff`.build/`, Ta5d6ff`DerivedData/`, Ta5d6ff`*.swiftpm/`, Ta5d6ff`Packages/`
Tff7b72- **R**: Ta5d6ff`.Rproj.user/`, Ta5d6ff`.Rhistory`, Ta5d6ff`.RData`, Ta5d6ff`.Ruserdata`, Ta5d6ff`*.Rproj`, Ta5d6ff`packrat/`, Ta5d6ff`renv/`
Tff7b72- **Universal**: Ta5d6ff`.DS_Store`, Ta5d6ff`Thumbs.db`, Ta5d6ff`*.tmp`, Ta5d6ff`*.swp`, Ta5d6ff`.vscode/`, Ta5d6ff`.idea/`

**Tool-Specific Patterns**:
Tff7b72- **Docker**: Ta5d6ff`node_modules/`, Ta5d6ff`.git/`, Ta5d6ff`Dockerfile*`, Ta5d6ff`.dockerignore`, Ta5d6ff`*.log*`, Ta5d6ff`.env*`, Ta5d6ff`coverage/`
Tff7b72- **ESLint**: Ta5d6ff`node_modules/`, Ta5d6ff`dist/`, Ta5d6ff`build/`, Ta5d6ff`coverage/`, Ta5d6ff`*.min.js`
Tff7b72- **Prettier**: Ta5d6ff`node_modules/`, Ta5d6ff`dist/`, Ta5d6ff`build/`, Ta5d6ff`coverage/`, Ta5d6ff`package-lock.json`, Ta5d6ff`yarn.lock`, Ta5d6ff`pnpm-lock.yaml`
Tff7b72- **Terraform**: Ta5d6ff`.terraform/`, Ta5d6ff`*.tfstate*`, Ta5d6ff`*.tfvars`, Ta5d6ff`.terraform.lock.hcl`
Tff7b72- **Kubernetes/k8s**: Ta5d6ff`*.secret.yaml`, Ta5d6ff`secrets/`, Ta5d6ff`.kube/`, Ta5d6ff`kubeconfig*`, Ta5d6ff`*.key`, Ta5d6ff`*.crt`

Tff7b725. Parse tasks.md structure and extract:
Tff7b72- **Task phases**: Setup, Tests, Core, Integration, Polish
Tff7b72- **Task dependencies**: Sequential vs parallel execution rules
Tff7b72- **Task details**: ID, description, file paths, parallel markers [P]
Tff7b72- **Execution flow**: Order and dependency requirements

Tff7b726. Execute implementation following the task plan:
Tff7b72- **Phase-by-phase execution**: Complete each phase before moving to the next
Tff7b72- **Respect dependencies**: Run sequential tasks in order, parallel tasks [P] can run together
Tff7b72- **Follow TDD approach**: Execute test tasks before their corresponding implementation tasks
Tff7b72- **File-based coordination**: Tasks affecting the same files must run sequentially
Tff7b72- **Validation checkpoints**: Verify each phase completion before proceeding

Tff7b727. Implementation execution rules:
Tff7b72- **Setup first**: Initialize project structure, dependencies, configuration
Tff7b72- **Tests before code**: If you need to write tests for contracts, entities, and integration scenarios
Tff7b72- **Core development**: Implement models, services, CLI commands, endpoints
Tff7b72- **Integration work**: Database connections, middleware, logging, external services
Tff7b72- **Polish and validation**: Unit tests, performance optimization, documentation

Tff7b728. Progress tracking and error handling:
Tff7b72- Report progress after each completed task
Tff7b72- Halt execution if any non-parallel task fails
Tff7b72- For parallel tasks [P], continue with successful tasks, report failed ones
Tff7b72- Provide clear error messages with context for debugging
Tff7b72- Suggest next steps if implementation cannot proceed
Tff7b72- **IMPORTANT** For completed tasks, make sure to mark the task off as [X] in the tasks file.

Tff7b729. Completion validation:
Tff7b72- Verify all required tasks are completed
Tff7b72- Check that implemented features match the original specification
Tff7b72- Validate that tests pass and coverage meets requirements
Tff7b72- Confirm the implementation follows the technical plan
Tff7b72- Report final status with summary of completed work

Note: This command assumes a complete task breakdown exists in tasks.md. If tasks are incomplete or missing, suggest running Ta5d6ff`/speckit.tasks` first to regenerate the task list.

Tff7b7210. **Check for extension hooks**: After completion validation, check if Ta5d6ff`.specify/extensions.yml` exists in the project root.
Tff7b72- If it exists, read it and look for entries under the Ta5d6ff`hooks.after_implement` key
Tff7b72- If the YAML cannot be parsed or is invalid, skip hook checking silently and continue normally
Tff7b72- Filter out hooks where Ta5d6ff`enabled` is explicitly Ta5d6ff`false`. Treat hooks without an Ta5d6ff`enabled` field as enabled by default.
Tff7b72- For each remaining hook, do **not** attempt to interpret or evaluate hook Ta5d6ff`condition` expressions:
Tff7b72- If the hook has no Ta5d6ff`condition` field, or it is null/empty, treat the hook as executable
Tff7b72- If the hook defines a non-empty Ta5d6ff`condition`, skip the hook and leave condition evaluation to the HookExecutor implementation
Tff7b72- For each executable hook, output the following based on its Ta5d6ff`optional` flag:
Tff7b72- **Optional hook** (Ta5d6ff`optional: true`):
Ta5d6ff ```
## Extension Hooks

**Optional Hook**: {extension}
Command: `/{command}`
Description: {description}

Prompt: {prompt}
To execute: `/{command}`
```
Tff7b72- **Mandatory hook** (Ta5d6ff`optional: false`):
Ta5d6ff ```
## Extension Hooks

**Automatic Hook**: {extension}
Executing: `/{command}`
EXECUTE_COMMAND: {command}
```
Tff7b72- If no hooks are registered or Ta5d6ff`.specify/extensions.yml` does not exist, skip silently

Served by rngit 1.5.2 - Generated in 0.09s